Route segments whose value is filled in from the URL itself, not hardcoded.
A folder named [id] creates a dynamic segment — its actual value is whatever appears in that position of the URL at request time, available to the page, layout, or Route Handler through params. [...slug] is a catch-all segment, matching any number of path segments and returning them as an array, while [[...slug]] makes that catch-all optional, matching even when no additional segments are present at all.
For pre-rendering specific dynamic values ahead of time, generateStaticParams tells Next.js exactly which param values to generate statically at build time. Anything not covered by it either 404s or gets generated on-demand at request time — which behavior applies depends on the dynamicParams setting for that route.
What you'll walk away knowing